/**
 * 
 */
package ar.com.gepp.torneo.entidades.impl;

public class Partido {
	Integer idPartido;
	Equipo local;
	Equipo visitante;
	Integer golLocal;
	Integer golVisitante;
	Boolean played;

	public Partido() {
		setPlayed(false);
		setGolLocal(0);
		setGolVisitante(0);
	}

	/**
	 * Juega el partido
	 * 
	 * @param posiciones
	 */
	public void jugar() {
		Motor motor = new Motor();
		motor.iniciar();
		// Los goles del local
		setGolLocal(motor.getValor(local.getValores()));
		setGolVisitante(motor.getValor(visitante.getValores()));
		setPlayed(true);
	}

	/**
	 * Devuelve el resultado del partido
	 * 
	 * @return int
	 */
	public Integer getResultado() {
		// Gano local
		if (getGolLocal() > getGolVisitante()) {
			return PuntajePartido.LOCAL;
		} else {
			// Gano visitante
			if (getGolLocal() < getGolVisitante()) {
				return PuntajePartido.VISITANTE;
			} else {
				// Empate
				return PuntajePartido.EMPATE;
			}
		}
	}

	/**
	 * Devuelve los puntos del local
	 * 
	 * @return Integer
	 */
	public Integer getPuntosLocal() {
		return getPuntos(PuntajePartido.LOCAL);
	}

	/**
	 * Devuelve los puntos del visitante
	 * 
	 * @return Integer
	 */
	public Integer getPuntosVisitante() {
		return getPuntos(PuntajePartido.VISITANTE);
	}

	/**
	 * Calcula los puntos segun el resultado y el equipo ganador
	 * 
	 * @param Integer res
	 * @return
	 */
	private Integer getPuntos(Integer res) {
		if (getResultado().equals(res)) {
			return PuntajePartido.PUNTOSG;
		} else {
			if ((getResultado()).equals(PuntajePartido.EMPATE)) {
				return PuntajePartido.PUNTOSE;
			} else {
				return PuntajePartido.PUNTOSP;
			}
		}
	}
	
	public Equipo getGanador() {
		if (getResultado().equals(PuntajePartido.EMPATE)){
			return null;
		} else if (getResultado().equals(PuntajePartido.LOCAL)) {
			return getLocal();
		} else {
			return getVisitante();
		}
	}

	public Equipo getLocal() {
		return local;
	}

	public void setLocal(Equipo local) {
		setGolLocal(0);
		this.local = local;
	}

	public Equipo getVisitante() {
		return visitante;
	}

	public void setVisitante(Equipo visitante) {
		setGolVisitante(0);
		this.visitante = visitante;
	}

	public Integer getGolLocal() {
		return golLocal;
	}

	public void setGolLocal(Integer golLocal) {
		this.golLocal = golLocal;
	}

	public Integer getGolVisitante() {
		return golVisitante;
	}

	public void setGolVisitante(Integer golVisitante) {
		this.golVisitante = golVisitante;
	}

	public Integer getIdPartido() {
		return idPartido;
	}

	public void setIdPartido(Integer idPartido) {
		this.idPartido = idPartido;
	}

	public Boolean getPlayed() {
		return played;
	}

	public void setPlayed(Boolean played) {
		this.played = played;
	}

}